/**
 * 正则表达式
 * i(忽略大小写)
 * m(多行匹配)
 * g(全局匹配)
 * 
 * y修饰符 (粘连修饰符)
 * u修饰符  \uD842\uDFB7
 * 
 * . 换行符以外的任意字符
 */
const str = 'aaa_aa_a'
const reg1 = /a+/g         // 每次会在剩余字符串匹配
const reg2 = /a+/y         // 剩余的第一个开始匹配 会匹配到_
console.log(reg1.exec(str))
console.log(reg2.exec(str))

console.log(reg1.exec(str)) 
console.log(reg2.exec(str)) // null

console.log(reg1.exec(str))
console.log(reg2.exec(str)) // 又从头开始


const str2 = '\uD842\uDFB7' // 表示一个字符
console.log(/^\uD842/.test(str2)) // es5  true 错误结果
console.log(/^\uD842/u.test(str2)) // es6  false 

console.log(/^.$/u.test(str2)) // true 
console.log(/\u{61}/u.test('a'))

console.log('\u{20BB7}') // 𠮷
console.log(/𠮷{2}/u.test('𠮷𠮷'))  // 出现两次
